{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Visualization of Dataset Properties"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "\"\"\"\n",
    "    IMPORTING LIBS\n",
    "\"\"\"\n",
    "import numpy as np\n",
    "import socket\n",
    "import time\n",
    "\n",
    "from torch.utils.data import DataLoader\n",
    "\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from data.data import LoadData # import dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. TU Datasets Visualization Script"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [],
   "source": [
    "def visualize_TUs_data(DATASET_NAME):\n",
    "    print(\"[I] Loading data (notebook) ...\")\n",
    "    dataset = LoadData(DATASET_NAME)\n",
    "    trainset, valset, testset = dataset.train, dataset.val, dataset.test\n",
    "    print(\"[I] Finished loading.\")\n",
    "\n",
    "    # Original Statistics\n",
    "    num_nodes, graph_labels = [], []\n",
    "    for split in [dataset.train, dataset.test, dataset.val]:\n",
    "        num_nodes += [g.number_of_nodes() for g in split[0][:][0]]\n",
    "        graph_labels += split[0][:][1]\n",
    "    orig_mean, orig_std, orig_max, orig_min = np.mean(num_nodes), np.std(num_nodes), np.max(num_nodes), np.min(num_nodes)\n",
    "\n",
    "    max_nodes = int(orig_mean+orig_std)\n",
    "    print(\"Original Dataset Statistics:\\n\")\n",
    "    print(\"Max nodes {}, Min nodes {}\\n\".format(orig_max, orig_min))\n",
    "    print(\"Mean no. of nodes {}, S.d. {}\\n\".format(orig_mean, orig_std))\n",
    "\n",
    "    num_nodes, graph_labels = [], []\n",
    "    for split in [dataset.train, dataset.test, dataset.val]:\n",
    "        split_num_nodes, split_graph_labels = [], []\n",
    "        g = split[0][:][0]\n",
    "        lab = split[0][:][1]\n",
    "        for idx in range(len(g)):\n",
    "            if g[idx].number_of_nodes() < max_nodes:\n",
    "                split_num_nodes.append(g[idx].number_of_nodes())\n",
    "                split_graph_labels.append(lab[idx])\n",
    "\n",
    "\n",
    "        num_nodes += split_num_nodes\n",
    "        graph_labels += split_graph_labels\n",
    "    label_bins = len(np.unique(graph_labels))\n",
    "    \n",
    "    print(\"VISUALIZATIONS:\\nMax nodes in consideration: {}\".format(max_nodes))\n",
    "    plt.figure(figsize=(12, 5))\n",
    "    plt.subplot(121)\n",
    "    \n",
    "    plt.hist(num_nodes, bins=len(np.unique(num_nodes)))\n",
    "    plt.xlabel('Number of Nodes in Graph', fontsize=12)\n",
    "    plt.ylabel('Count', fontsize=12)\n",
    "    \n",
    "    plt.subplot(122)\n",
    "    plt.hist2d(graph_labels, num_nodes, bins=[label_bins, 20])\n",
    "    plt.xlabel(r'Graph label', fontsize=12)\n",
    "    plt.ylabel(r'Graph size (number of nodes)', fontsize=12)\n",
    "    plt.colorbar()\n",
    "    plt.show()\n",
    "    \n",
    "    print(\"Correlation between graph size (number of nodes) and labels: %.2f\" % np.corrcoef(graph_labels, num_nodes)[0,1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### a. TU Dataset ENZYMES"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[I] Loading data (notebook) ...\n",
      "[!] Dataset:  ENZYMES\n",
      "Time taken: 1.1476s\n",
      "[I] Finished loading.\n",
      "Original Dataset Statistics:\n",
      "\n",
      "Max nodes 126, Min nodes 2\n",
      "\n",
      "Mean no. of nodes 32.63333333333333, S.d. 15.275761483110715\n",
      "\n",
      "VISUALIZATIONS:\n",
      "Max nodes in consideration: 47\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x360 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Correlation between graph size (number of nodes) and labels: 0.04\n"
     ]
    }
   ],
   "source": [
    "visualize_TUs_data('ENZYMES')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### b. TU Datasets DD"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[I] Loading data (notebook) ...\n",
      "No Node Attribute Data\n",
      "[!] Dataset:  DD\n",
      "Time taken: 10.4258s\n",
      "[I] Finished loading.\n",
      "Original Dataset Statistics:\n",
      "\n",
      "Max nodes 5748, Min nodes 30\n",
      "\n",
      "Mean no. of nodes 284.3166383701188, S.d. 271.99968930043167\n",
      "\n",
      "VISUALIZATIONS:\n",
      "Max nodes in consideration: 556\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x360 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Correlation between graph size (number of nodes) and labels: -0.51\n"
     ]
    }
   ],
   "source": [
    "visualize_TUs_data('DD')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### c. TU Datasets PROTEINS_full"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[I] Loading data (notebook) ...\n",
      "[!] Dataset:  PROTEINS_full\n",
      "Time taken: 2.5617s\n",
      "[I] Finished loading.\n",
      "Original Dataset Statistics:\n",
      "\n",
      "Max nodes 620, Min nodes 4\n",
      "\n",
      "Mean no. of nodes 39.05750224618149, S.d. 45.758421863948776\n",
      "\n",
      "VISUALIZATIONS:\n",
      "Max nodes in consideration: 84\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x360 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Correlation between graph size (number of nodes) and labels: -0.36\n"
     ]
    }
   ],
   "source": [
    "visualize_TUs_data('PROTEINS_full')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. MNIST/CIFAR10 Superpixels Dataset Visualization Script"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "def visualize_superpixels_data(DATASET_NAME):\n",
    "    print(\"[I] Loading data (notebook) ...\")\n",
    "    dataset = LoadData(DATASET_NAME)\n",
    "    trainset, valset, testset = dataset.train, dataset.val, dataset.test\n",
    "    print(\"[I] Finished loading.\")\n",
    "\n",
    "    # Original Statistics\n",
    "    num_nodes, graph_labels = [], []\n",
    "    for split in [dataset.train, dataset.test, dataset.val]:\n",
    "        num_nodes += [g.number_of_nodes() for g in split[:][0]]\n",
    "        graph_labels += list(split[:][1].numpy())\n",
    "    orig_mean, orig_std, orig_max, orig_min = np.mean(num_nodes), np.std(num_nodes), np.max(num_nodes), np.min(num_nodes)\n",
    "\n",
    "    max_nodes = int(orig_mean+orig_std)\n",
    "    print(\"Original Dataset Statistics:\\n\")\n",
    "    print(\"Max nodes {}, Min nodes {}\\n\".format(orig_max, orig_min))\n",
    "    print(\"Mean no. of nodes {}, S.d. {}\\n\".format(orig_mean, orig_std))\n",
    "\n",
    "    num_nodes, graph_labels = [], []\n",
    "    for split in [dataset.train, dataset.test, dataset.val]:\n",
    "        split_num_nodes, split_graph_labels = [], []\n",
    "        g = split[:][0]\n",
    "        lab = split[:][1]\n",
    "        for idx in range(len(g)):\n",
    "            if g[idx].number_of_nodes() < max_nodes:\n",
    "                split_num_nodes.append(g[idx].number_of_nodes())\n",
    "                split_graph_labels.append(lab[idx].item())\n",
    "\n",
    "\n",
    "        num_nodes += split_num_nodes\n",
    "        graph_labels += split_graph_labels\n",
    "    label_bins = len(np.unique(graph_labels))\n",
    "    \n",
    "    print(\"VISUALIZATIONS:\\nMax nodes in consideration: {}\".format(max_nodes))\n",
    "    plt.figure(figsize=(12, 5))\n",
    "    plt.subplot(121)\n",
    "    \n",
    "    plt.hist(num_nodes, bins=len(np.unique(num_nodes)))\n",
    "    plt.xlabel('Number of Nodes in Graph', fontsize=12)\n",
    "    plt.ylabel('Count', fontsize=12)\n",
    "    \n",
    "    plt.subplot(122)\n",
    "    plt.hist2d(graph_labels, num_nodes, bins=[label_bins, 20])\n",
    "    plt.xlabel(r'Graph label', fontsize=12)\n",
    "    plt.ylabel(r'Graph size (number of nodes)', fontsize=12)\n",
    "    plt.colorbar()\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[I] Loading data (notebook) ...\n",
      "preparing all graphs for the TEST set...\n",
      "preparing all graphs for the TRAIN set...\n",
      "[I] Data load time: 396.6704s\n",
      "[I] Finished loading.\n"
     ]
    }
   ],
   "source": [
    "DATASET_NAME = 'MNIST'\n",
    "\n",
    "print(\"[I] Loading data (notebook) ...\")\n",
    "dataset = LoadData(DATASET_NAME)\n",
    "trainset, valset, testset = dataset.train, dataset.val, dataset.test\n",
    "print(\"[I] Finished loading.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Superpixels Dataset MNIST"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[I] Loading data (notebook) ...\n",
      "preparing all graphs for the TEST set...\n",
      "preparing all graphs for the TRAIN set...\n",
      "[I] Data load time: 398.9233s\n",
      "[I] Finished loading.\n",
      "Original Dataset Statistics:\n",
      "\n",
      "Max nodes 75, Min nodes 40\n",
      "\n",
      "Mean no. of nodes 70.56668571428571, S.d. 6.839718781902528\n",
      "\n",
      "VISUALIZATIONS:\n",
      "Max nodes in consideration: 77\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuQAAAFECAYAAABvUCsWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzde9hcVX33//cn4SCnCBjBkIBBRSp41Sh5KBZrURRQW8Hrkj7hqYKKjaVQUWlrsFVRH/pDi+AZDQdBK2KKUigHOYqHPggGRE6BGiFAICQEECJIyOHz+2OvW4Y7cx/mzj2z5575vLj2NXvW3mvNdzbJzDdr1l5LtomIiIiIiHpMqjuAiIiIiIh+loQ8IiIiIqJGScgjIiIiImqUhDwiIiIiokZJyCMiIiIiapSEPCIiIiKiRpvUHUBERPQuSbsD32soegnwCWBb4G+Ah0v5x2xf2uHwIiK6gjIPeUREdIKkycADwJ8A7wV+Z/vkeqOKiKhfR4asSNpZ0o8kLZJ0u6RjS/kJkh6QdHPZ3tpQ53hJiyXdJenAhvK9JN1ajn1Jkkr55pK+V8qvlzSzE+8tIiJGbX/gN7bvrTuQiIhu0qkx5GuB42y/AtgHOFrSHuXYqbZnle1SgHJsDrAncBDwtdKzAnAaMBfYrWwHlfIjgcdsvww4FfhsB95XRESM3hzguw3Pj5F0i6SzJG1XV1AREXWrZciKpAuBrwD70uQnS0nHA9j+/8rzy4ETgCXAj2z/USk/DNjP9gcGzrF9naRNgIeAF3qYNzh16lTPnDlznN9dRET73XjjjSttv7DuOEZL0mbAg8CetpdL2hFYCRj4DDDN9vua1JtL1QnDpMmb7bXlVu17y7vPXNm2tgfc9nB7/5d507Y2z9StV7X3BYDH12zR1vbXrJ088kkb4YVbtv8aPfz4lLa2P2Wb37e1fYCVix4Z82fYgW/Yyo88uq7lejfesvpy2weNfGbndfymzjKU5NXA9VQJ+TGSDgcWUvWiPwZMB37eUG1pKVtT9geXUx7vB7C9VtLjwAuoPvCbmjlzJgsXLtz4NxUR0WGSJtqwj7cAN9leDjDwCCDpdODiZpVszwfmA2zz/Bne608/2LYAr/nmGW1re8Aepx3V1vafflHrSUor/ub117a1fYCLH3hlW9t/6OHnt7X9ua/+aVvbBzj9ije1tf03vu6WtrYPcOb/OmfMn2GPPLqOGy7fpeV6k6f9eupYX7PdOjrtoaStge8DH7L9BNXwk5cCs4BlwOcHTm1S3cOUD1dncAxzJS2UtPDhhx9uUiUiItrgMBqGq0ia1nDsHcBtHY8oIiYkA+vH8F8361gPuaRNqZLx79j+AQzbQ7IU2Lmh+gyqnzqXlv3B5Y11lpYhK88HHh0cR2Nvy+zZszPFTEREm0naEngz8IGG4s9JmkX13bpk0LGIiGGYde7uBLtVHUnIy0woZwKLbJ/SUD7N9rLytLGH5CLgXEmnADtR3bx5g+11klZJ2odqyMvhwJcb6hwBXAe8E7hmuPHjERHRGbafohpC2Fj27prCiYgJruoh760Ur1M95PsC7wZulXRzKfsYcFizHhLbt0taANxBNUPL0bYHBsYdBZwNbAFcVjaoEv5vS1pM1TM+p83vKSIiIiJq0O1DUFrVkYTc9s9oPsZ7yFXZbJ8InNikfCGwwR0ftp8GDt2IMCMiIiKiyxmzrscGQXR8lpWIiIiIiI2RISsRERERETUxsC4JeUREREREfdJDHhERERFRE0PGkEdERERE1Km35lhJQh4RERERE4hxxpBHRMTIZs67ZNTnLjnpbW2MJCKixxjW9VY+noQ8IiImhrVbiodftWnb2n/je9/ftrYHPH3IupFP2ghb7PBkW9s/feGftbV9AD3R3tRks+ltvkY3v66t7QNs/dLftrX9n973kra2v7GqlTp7SxLyiIiIiJhAxLqm601OXEnIIyIiImLCMLC+x4asTKo7gIiIiIiIVqwrveStbMOR9DxJN0j6laTbJX2qlJ8g6QFJN5ftrQ11jpe0WNJdkg5sKN9L0q3l2Jckjdidnx7yiIiIiOh3q4E32v6dpE2Bn0m6rBw71fbJjSdL2gOYA+wJ7ARcJenlttcBpwFzgZ8DlwIHAZcxjPSQR0RERMSEYca/h9yV35Wnm5ZtuIExBwPn2V5t+x5gMbC3pGnAFNvX2TbwLeCQkd5TEvKIiIiImFDWWy1vI5E0WdLNwArgStvXl0PHSLpF0lmStitl04H7G6ovLWXTy/7g8mElIY+IiIiICWMjesinSlrYsM19Trv2OtuzgBlUvd2vpBp+8lJgFrAM+Hw5vVmG72HKh5Ux5BERERExYRixbmx9yittzx6xffu3kq4FDmocOy7pdODi8nQpsHNDtRnAg6V8RpPyYaWHPCIiIiImlPEesiLphZK2LftbAG8C7ixjwge8A7it7F8EzJG0uaRdgd2AG2wvA1ZJ2qfMrnI4cOFI7yc95BERERExYQwMWRln04BzJE2m6rBeYPtiSd+WNKu87BLgAwC2b5e0ALgDWAscXWZYATgKOBvYgmp2lWFnWIEk5BERERExoYh1Ht9BHrZvAV7dpPzdw9Q5ETixSflC4JWtvH4S8oiIiIiYMAys77FR10nIIyIiImJCacOQlVolIY+IiAlh/abw1Iz1bWt/8y/fNvJJG2nSW17V1vbXLZrS1van37Ru5JM20tot2pto/W76Nm1tf8ryEWe422hPvGSLtrb//MXtfw8bwx7/ISt1S0IeERERERPK+vSQR0RERETUo5plJT3kERERERE1yZCViIiIiIjaZJaViIiIiIiarRth5c2JJgl5REREREwYRj03hry33k1ERHQVSbtLurlhe0LShyRtL+lKSb8uj9vVHWtERF2SkEdERNvYvsv2LNuzgL2Ap4ALgHnA1bZ3A64uzyMiRmW9J7W8dbPuji4iInrJ/sBvbN8LHAycU8rPAQ6pLaqImFAGpj1sdetmGUMeERGdMgf4btnf0fYyANvLJO1QX1gRMZEY5abOiIiIVknaDHg7cHyL9eYCcwEmb5dh5hFRybSHERERrXsLcJPt5eX5cknTSu/4NGBFs0q25wPzATbfZWd3JtSI6GY2WRgoIiJiDA7j2eEqABcBRwAnlccLR2pg0lp43or2fQmv//3v29b2gBf9rL3tb7Hy6ba2v9mipW1tH4Btp7S3+Ts2a2v7kx5+vK3tA2z7P1Pb2v4m9zb993EXEevJkJWIiIhRk7Ql8GbgAw3FJwELJB0J3AccWkdsETHxmPSQR0REtMT2U8ALBpU9QjXrSkREy7p91pRWJSGPiIiIiAnDiPWZZSUiIiIioj7pIY+IiIiIqImh61febFUS8oiIiIiYQMS6zLISERH9QNImVIv5vA14FbAt8FvgV8BlwH/aXltfhBHRj9JDHhERfUHSB4B/BhYBPwYuBlYB2wCvAP4GOEXSv9r+em2BRkRfSg95RET0g5cDe9t+qMmxC4B/LStsHtfZsCKi39lKD3lERPQ+2yMm2raXAf/QgXAiIp6j1xYG6si7kbSzpB9JWiTpdknHlvLtJV0p6dflcbuGOsdLWizpLkkHNpTvJenWcuxLklTKN5f0vVJ+vaSZnXhvERG9TtIeknYs+9tI+pSkT5QVOCMiYiN16p8Xa4HjbL8C2Ac4WtIewDzgatu7AVeX55Rjc4A9gYOAr0maXNo6DZgL7Fa2g0r5kcBjtl8GnAp8thNvLCKiD5xLdUMnwL8BrwdeC3yjtogiom8ZWI9a3oYj6XmSbpD0q9J5/KlSPm6dx8PpSEJue5ntm8r+KqqbhKYDBwPnlNPOAQ4p+wcD59lebfseYDGwdxmvOMX2dbYNfGtQnYG2zgf2H80FiIiIEc20fVf5TH0HcCjwTuDA4atFRLSDWOdJLW8jWA280fargFnAQZL2YXw7j4fU8THkZSjJq4HrgR3LGERsL5O0QzltOvDzhmpLS9masj+4fKDO/aWttZIeB14ArGzLG4mI6B+rJW0D7AHcb3tlmRLxeZ0MYrPfruPFFz7atvbXta3lZz3/x4vb2r5//3Rb21/75FNtbR9AjzzW3vY327St7a97Zk1b2weY9Ej7/h4ArHvmmba2v7GqaQ/Ht8+1dPT+rjzdtGym6vDdr5SfA1wLfJSGzmPgHkkDncdLKJ3HAJIGOo8vG+71O5qQS9oa+D7wIdtPDNOB3eyAhykfrs7gGOZS/auFXXbZZaSQIyKiGrJyDdWUh18pZa8B7qktoojoa+vaMMij9HDfCLwM+Krt6yWNZ+fxkDqWkEvalCoZ/47tH5Ti5ZKmlTc4DVhRypcCOzdUnwE8WMpnNClvrLO09Nw8H9jgn5C25wPzAWbPnr1Bwh4REc9l+8OSDgDW2P5RKV4PfLjGsCKiTxmNtYd8qqSFDc/nl7ywatdeB8yStC1wgaRXDtPWWDqPh9SpWVYEnAkssn1Kw6GLgCPK/hHAhQ3lc8rMKbtSjb+5ofwLZZWkfUqbhw+qM9DWO4Frys8PERGxkWxfASwuYyqxvdD2NTWHFRF9aj2TWt6AlbZnN2zzm7Vt+7dUQ1MOonQeA4xD5/GQOjXLyr7Au4E3Srq5bG8FTgLeLOnXwJvLc2zfDiwA7gB+CBxd/tUCcBRwBtWNnr/h2TE5ZwIvKGN4PkIZdB8RERtH0i6S/hu4E7iqlL1T0hn1RhYR/ciGdVbL23AkvbD0jCNpC+BNVJ9549l5PKSODFmx/TOad+ED7D9EnROBE5uULwQ2+AnB9tNUd/5HRMT4+gZwCfBnwCOl7Erg87VFFBF9bbxv6gSmAeeUceSTgAW2L5Z0HbBA0pHAfZRc0/btkgY6j9eyYefx2cAWVB3Hw97QCVmpMyIiRrY38Dbb6yUZwPbjkp5fc1wR0YeqMeTjO8jD9i1UswAOLn+Eceo8Hk4S8oiIGMlyqlkH/megoMzBe19tEUVEX1s3wkI/E02nxpBHRMTEdTJwsaT3AptIOgz4HlkROSJqMDAPeatbN0sPeUREDMv2WZIepVrD4X6qG5s+bvs/640sIvrT+A9ZqVsS8oiIGFFJvpOAR0RXWN9jQ1aSkEdExAYkvW8059k+q92xREQ0Gpj2sJckIY+IiGbe3bAvqvUkHqIasrIz8CLgZ0AS8ojouAxZiYiInmf7DQP7kr4M/KftLzSUHQu8tMNBoTXrRj6vi/np1e1tf83atraP17e3fcDt/l/8THub97oO/Blt8/8Hr+/uhc6raQ/TQx4REf3lXcDUQWVfAVYCH+x8OBERvaW3+vsjIqIdHgLePqjsL4EVNcQSEcF61PLWzdJDHhERI/kgcL6kf6QaQ74LsAdlCemIiE4amIe8lyQhj4iIYdm+UtJLgbcAOwGXAJeUJaUjIjouN3VGRETfsb1S0o+B6cADScYjojYTYOXNVvXWPy8iImLcSZpWkvFfAz8AFkv6iaSdRll/W0nnS7pT0iJJr5V0gqQHJN1ctre29U1ERM8wvTeGPAl5RESM5DTgV8D2tqcB2wG/BL4+yvpfBH5o+4+AVwGLSvmptmeV7dLxDjoietf60kveytbNMmQlIiJG8jpgmu01ALaflPRPwAMjVZQ0BXg98J5S9xngGam7vxwjonv14k2d6SGPiIiRPEY1q0qj3YHfjqLuS4CHgW9K+qWkMyRtVY4dI+kWSWdJ2m4c442IHtdrPeRJyCMiYiSfA66SdJKkoySdBFxZykeyCfAa4DTbrwaeBOZRDYN5KTALWAZ8vlllSXMlLZS08Jm1T43DW4mIiW5gpc4k5BER0Tdsnw78b6rVOv+yPB5me/4oqi8Fltq+vjw/H3iN7eW219leD5wO7D3Ea8+3Pdv27M022XKj30tE9IZeu6kzY8gjImJEtq8BrhlDvYck3S9pd9t3AfsDd0iaZntZOe0dwG3jGG5E9DL33hjyJOQRETEsSZtR3ZQ5C9i68Zjtw0fRxN8D3ynt3A28F/iSpFlU92ctAT4wjiFHRA/rxZs6k5BHRMRIzqGarvC/gOWtVrZ9MzB7UPG7W45i9TOsv+f+lqt1k3W/e7K9L+D17W2/E9r8Hrx24l8jr6s7gvolIY+IiH5zELCr7dHMqhIR0VYDN3X2kiTkERExkvuAzesOIiJigJOQR0REn/kWcKGkLzJoyEq52TMioqO6fdaUViUhj4iIkRxTHv91ULmpFv6JiOgYZ5aViIjoN7Z3rTuGiIheloQ8IiIiIiaUXhtDnpU6IyIiImICqWZZaXUbtkVpZ0k/krRI0u2Sji3lJ0h6QNLNZXtrQ53jJS2WdJekAxvK95J0azn2JUkj/ushPeQRERERMaG0oYd8LXCc7ZskbQPcKOnKcuxU2yc3nixpD2AOsCewE3CVpJfbXgecBswFfg5cSjV17GXDvXh6yCMiYgOS3t6wv2mdsURENBpYqXM8e8htL7N9U9lfBSwCpg9T5WDgPNurbd8DLAb2ljQNmGL7OtummqXqkJHeUxLyiIho5t8b9h+pLYqIiMFczbTS6jZakmYCrwauL0XHSLpF0lmStitl04HGpYOXlrLpZX9w+bAyZCUiIpp5SNIxwB3AJpLeABtO/Jt5yCOiDmOch3yqpIUNz+fbnt94gqStge8DH7L9hKTTgM9Qdcx/Bvg88D6afB6Wc4YqH1YS8oiIaOY9wKeBY4HNgLOanJN5yCOi48yYx5CvtD17qINleN73ge/Y/gGA7eUNx08HLi5PlwI7N1SfATxYymc0KR9WEvKIiNiA7f8HvAlA0mLbL6s5pIiIYuQx4S23WM2EciawyPYpDeXTbC8rT98B3Fb2LwLOlXQK1U2duwE32F4naZWkfaiGvBwOfHmk109CHhERwxpIxiXtQhkfafv+4Wu1JQ7Wr3660y87vry+7ggiekIrY8JHaV/g3cCtkm4uZR8DDpM0i6pjfgnwger1fbukBVTD+tYCR5cZVgCOAs4GtqCaXWXYGVYgCXlERIxA0ouA7wGvpbrB8wWSfg7MsT3iT7EREeNtvKc9tP0zmo//vnSYOicCJzYpXwi8spXXzywrERExkq8DvwK2sz0N2A74ZSmPiOioatYUtbx1s/SQR0TESF4HTLO9BsD2k5L+CXig3rAiol+N9xjyuqWHPCIiRvIYsMegst2B39YQS0REW+chr0N6yCMiYiSfo1oW+kzgXuDFwHuBj9caVUT0rW4fgtKqJOQRETEs26dL+g3wf4A/pppT97AsChQRdTDdPya8VUnIIyJiRCX5TgIeEV2hy0egtCxjyCMiIiIiapQe8oiIiIiYONx7Y8g70kMu6SxJKyTd1lB2gqQHJN1ctrc2HDte0mJJd0k6sKF8L0m3lmNfKsucImlzSd8r5ddLmtmJ9xURERERNfAYti7WqSErZwMHNSk/1fassl0KIGkPYA6wZ6nzNUmTy/mnAXOB3co20OaRwGNleedTgc+2641ERPQTSZMlXStp87pjiYgY0GsLA3UkIbf9E+DRUZ5+MHCe7dW27wEWA3tLmgZMsX2dbQPfAg5pqHNO2T8f2H+g9zwiIsbO9jpgV3LPUUR0kV6bh7zuD9hjJN1ShrRsV8qmA/c3nLO0lE0v+4PLn1PH9lrgceAF7Qw8IqKPfAo4TdKLS4/5pIGt7sAiov+Y9JCPp9OAlwKzgGXA50t5syvmYcqHq7MBSXMlLZS08OGHH24t4oiI/nQGcDhwN/AMsAZYWx4jIjrLgNX61sVqm2XF9vKBfUmnAxeXp0uBnRtOnUG1CMXSsj+4vLHOUkmbAM9niCEytucD8wFmz57d5T9gRER0hV3rDiAiolG3D0FpVW095GVM+IB3AAMzsFwEzCkzp+xKdfPmDbaXAask7VPGhx8OXNhQ54iy/07gmjLOPCIiNpLte23fSzU08JmB56UsIqLzemyWlY70kEv6LrAfMFXSUuCTwH6SZlFdoiXABwBs3y5pAXAH1U+iR5ebigCOopqxZQvgsrIBnAl8W9Jiqp7xOe1/VxER/UHStsDXqDo81gBbSXo7sLftfxll/TOAV1J95r8PuAv4HjCT6jvgr2w/1o74I6LXdP+Y8FZ1JCG3fViT4jOHOf9E4MQm5QupPtAHlz8NHLoxMUZExJC+DjwGvJiqswTgOqp7f0ZMyIEvAj+0/U5JmwFbAh8DrrZ9kqR5wDzgo+MeeUT0pi7v8W5VVuqMiIiR7A/sZHuNJAPYfljSDiNVlDQFeD3wnlLvGeAZSQdT/XIK1bS115KEPCJGIyt1RkREH3ocmNpYIGkXqhmyRvIS4GHgm5J+KekMSVsBO5Z7gyiPTZP7xpmx1rB6o95ERPSQHhtDnoQ8IiJGcgbwfUlvACZJei1Vr/bXR1F3E+A1wGm2Xw08STU8ZVRsz7c92/bsTclioRExQGPYulcS8oiIGMlngQXAV4FNgbOoZrn64ijqLgWW2r6+PD+fKkFfPjDbVnlcMd5BR0QPSw95RET0E1e+YHsP21vZfkV5PuJXnO2HgPsl7V6K9qe6MbRxutojeHYa24iIkfVYQj7qmzolHWr7P5qUv9P2+eMbVkREdBNJbwQOA3aiWpTtPNtXj7L63wPfKTOs3A28l6pDaIGkI4H7yExZETFaAyt19pBWesiHmqZw/ngEEhER3UnSR4DzqNZ5uAR4BDhX0nGjqW/75jIO/I9tH2L7MduP2N7f9m7lsenqyhER/WDEHnJJLym7k8rKmY3/JHkJ8HQ7AouIiK5xHPBG2wMrKiPp28CVVHORR0R0VK+txz6aISuLqX4cEPCbQcceAk4Y55giIqL7LB70/G66flRmRPSsHvv0GTEhtz0JQNKPbf95+0OKiIi6SWoc0ngCcKakE6hmTdkZ+Djwyc5HFhFB/44hTzIeEdFX1gJryvYNqhs67wJ+BywC/rqUR0R0nNz6Nmx70s6SfiRpkaTbJR1byreXdKWkX5fH7RrqHC9psaS7JB3YUL6XpFvLsS9JGvFfD63MsrIrcCIwC9i68ZjtXUbbTkRETAi71h1ARERT7ZnGcC1wnO2bJG0D3CjpSuA9wNW2T5I0j2phs49K2gOYA+xJNfvUVZJebnsdcBowF/g5cClwEHDZcC8+6oQcOJdqDPlxwFMt1IuIiAnG9r11xxAR0ZzGfciK7WXAsrK/StIiYDpwMLBfOe0c4Frgo6X8PNurgXskLQb2lrQEmGL7OgBJ3wIOYRwT8j2BfW2vb6FORERMcJKeD3wQeDUb/kJ6QC1BRUR/a+NNnZJmUn3eXQ/sWJJ1bC+TtEM5bTpVD/iApaVsTdkfXD6sVhLyn5TgbmyhTkRErWbOu2RU5y056W1tjmRC+w9gMnAB8PuaY4mIGGtCPlXSwobn820/Zz0dSVsD3wc+ZPuJYYZ/NzvgYcqH1UpCvgS4XNIPqKY7fPZV7E+00E5EREws+wAvsL2m7kAiIoCxJuQrbc8e6qCkTamS8e/Y/kEpXi5pWukdnwasKOUDM04NmEG1ivHSsj+4fFitrNS5FfBfwKYlgMYtIiJ618+AV9QdREQEUG7qVOvbMMpMKGcCi2yf0nDoIuCIsn8EcGFD+RxJm5eJT3YDbijDW1ZJ2qe0eXhDnSGNuofc9ntHe25ERPSU9wCXSroeWN54wPana4koIvraSNMYjsG+wLuBWyXdXMo+BpwELJB0JHAfcCiA7dslLQDuoJqh5egywwrAUcDZwBZUN3MOe0MntDbt4UuGOmb77tG2ExERE86JVL+GLgGmNJT32Fp5ETFhjPOnj+2f0Xz8N8D+Q9Q5kerzcXD5QuCVrbx+K2PIF7PhYPWByzG5lReNiIgJZQ7w8oGZBiIiYny1MmTlOePNJb2Iatnkn453UBER0VXupprKKyKiK7RhyEqtWukhfw7bD0n6EPA/VIsGRUREb/o2cJGkL7PhGPJr6gkpIvraOC8MVLcxJ+TF7sCW4xFIRER0raPL478OKjcw5P1FERFtYXruDpZWbur8Kc99+1tSrd6ZO+wjInqY7V3rjiEiope10kN+xqDnTwK/sv3rcYwnIiIiImJ4/dpDbvucdgYSERHdSdL9DPH1Z3uXDocTEdG/N3WW5UT/hWrS9J2olgH9NnCi7WfaE15ERHSBdw16Pg04FjivhlgiIvq3hxz4HLA38LfAvcCLgY9TLRLx4fEPLSIiuoHtHw8uk3Qt8EPgix0PKCKijxPyQ4FX2X6kPL9L0k3Ar0hCHhHRb1YDudkzIjpO7uMhKwy9nGhvTQQZERHPIWnwbFpbAm8FLqshnIiIvp6H/D+A/5L0KeA+qiEr/1LKIyKid+086PmTwClU9xFFRHReH/eQ/xNVAv5Vqps6HwC+C/zfNsQVERFdwvZ7644hIqJR3w1ZkbQv8HbbHwU+UbaBY58FXgP8vG0RRkRE7STtDrwK2Lqx3PZZ9UQUEX2t3xJy4GPA14Y49iPgn4G/HLeIIiKiq0j6GFVnzK+ApxoOGUhCHhGd1ac3dc6imtqqmavIh3FERK/7ELC37VvqDiQiAujLHvIpwGbA75sc2xTYZlwjioiIbvN74M66g4iI+IMeS8gnjeKcO4EDhjh2APmQjojodR8HvixpmqRJjVvdgUVEfxqYi7yVrZuNpof8VOAbkiYD/2l7ffkQPoRqxpWPtDPAiIio3dnl8f0NZaLqo5o8UmVJS4BVwDpgre3Zkk4A/gZ4uJz2MduXjlO8ERETyogJue1zJb0IOAfYXNJKYCrwNPBJ299tc4wREVGv8ViR8w22Vw4qO9X2yePQdkT0my7v8W7VqOYht32KpDOA1wIvAB4BrrP9RDuDi4iI+tm+t+4YIiL+YAIMQWnVqMf/2X7C9uW2zy2PScYjInqUpFPKr6PDnfMiSaeMojkDV0i6UdLchvJjJN0i6SxJ2w3xGnMlLZS0cA2rW3gHERETRysrdUZE9L2Z8y6pO4ROuQu4QdIi4Mfl+SqqmbVeDuwH7M7oVmve1/aDknYArpR0J3Aa8BmqZP0zwOeB9w2uaHs+MB9girbvsT6xiBizHvs0SEIeEREbsP0NSWcBBwNvobqRf1vgMeAW4OvAf9leO4q2HiyPKyRdQDWn+U8Gjks6Hbh4/N9FRPSsJOQREdEPbPG7Km4AACAASURBVK8Bzi/bmEjaCphke1XZPwD4tKRptpeV094B3LbRAUdEXxC9N4Y8CXlERLTTjsAFkqD6zjnX9g8lfVvSLKp+riXAB+oLMSImnCTkrSs/e/4FsML2K0vZ9sD3gJlUH8Z/Zfuxcux44EiqOWs/aPvyUr4X1Xy4WwCXAsfatqTNgW8Be1HNAPO/bS/pxHuLiIih2b4beFWT8nfXEE5E9IJ+nmVlI50NHDSobB5wte3dgKvLcyTtAcwB9ix1vlYWJYLqJqC5wG5lG2jzSOAx2y+jWsjos217JxERERFRL49hG0GZ8WmFpNsayk6Q9ICkm8v21oZjx0taLOkuSQc2lO8l6dZy7EsqPxEOpyMJebl559FBxQdTLTZEeTykofw826tt3wMsBvaWNA2YYvs626bqET+kSVvnA/uP5s1HRERExATUhoSc5h3IUC1iNqtsl8KYO5CH1Kke8mZ2HLihpzzuUMqnA/c3nLe0lE0v+4PLn1On3PH/ONUCRhERMQ4kvULSxyV9tTz/I0l/XHdcEdGf5Na3kQzRgTyUsXQgD6nOhHwozXq2PUz5cHU2bLxhkYmHH354jCFGRPQPSYdSzUU+HRgY+701MJpFgSIixt/YesinDuSAZZvbpOVmmi1iNpYO5CHVmZAvL/+KoDyuKOVLgZ0bzpsBPFjKZzQpf04dSZsAz2eIf+HYnm97tu3ZL3zhC8fprURE9LRPAwfY/luqm+0BfkWTmzUjItpuLMl4lZCvHMgByzZ/FK92GvBSYBawjGoRMxhbB/KQ6kzILwKOKPtHABc2lM+RtLmkXanG3txQhrWskrRPGR9++KA6A229E7im/EwQEREbbweqBBye/WIZ/ajMiIhx1o4hK83YXm57ne31wOnA3uXQWDqQh9SRhFzSd4HrgN0lLZV0JHAS8GZJvwbeXJ5j+3ZgAXAH8EPgaNsDPTJHAWdQjdP5DXBZKT8TeIGkxcBHKDO2RETEuLiRZ4eqDJgD3FBDLBER7bqpcwMDozmKxkXMxtKBPKSOzENu+7AhDu0/xPknAic2KV8IvLJJ+dPAoRsTY0REDOmDwBWlM2UrSZcDL6dadTMiouPaMQ956UDej2qs+VLgk8B+zRYxs327pIEO5LVs2IF8NtW6OZfxbAfykLJSZ0REDMv2nZL+iGqBt4upbmS62Pbv6o0sIvpWGxLyITqQzxzm/JY6kIeThDwiApg575K6Q+hakg4HrrK9YFD5Yba/W1NYEdGvevAOlm6c9jAiIrrLN4EbJP3poPJv1BFMRPQ3jXHrZknIIyJiJE8BRwIXSHp/Q3m3f8dFRK/q0E2dnZKEPCIiRmLblwN/BnxE0pfLEtFd/hUXETExJCGPiIiRCMD2/wCvBXYFriT3IUVETTo1D3mnJCGPiIiR/Ghgx/bjwF8C1wPLa4soIvpbhqxEREQ/sf32Qc9t+3jbu9YVU0T0uR5LyPNzY0REbEDSP5c5dpH06aHOs/2JzkUVEQFMgCEorUpCHhERzcxo2N+5tigiIppJQh4REb3O9lEN+++tM5aIiMHSQx4REX1F0h7AI7aXS9oa+EdgHXCy7afqjS4i+lKPJeS5qTMiIkZyLrBt2T8ZeD3V9IdZqTMiatFr0x6mhzwiIkYy0/ZdkgS8A9gT+D1wT71hRURfmgCzprQqCXlERIxktaRtgD2A+22vlLQJ8Lya44qIfpWEPCIi+sy5wDXANsBXStlrSA95RNRAdP8QlFYlIY+IiGHZ/rCkA4A1tgdW7VwPfLjGsCKinyUhj4iIfmP7ikHPF9YVS0SE3FsZeRLyiIiIiJg4clNnRERERES9MoY8IiIiIqJOScgjIqJfSXrOgnK214+izhJgFdXqnmttz5a0PfA9YCawBPgr24+Nd7wRERNBEvKIiBiWpNcAXwX+mGfnHhdVH9XkUTbzBtsrG57PA662fZKkeeX5R8cp5DHZZKdpbX+NtQ8ua/trRPSDDFmJiIh+cw7wX8D7gKfGqc2Dgf0a2r+WmhPyiJhAkpBHRESfeTHwz/aY5xkzcIUkA9+wPR/Y0fYyANvLJO0wTrFGRK9zesgjIqL/XAAcAFw+xvr72n6wJN1XSrpztBUlzQXmAjyPLcf48hHRc5KQR0REr5P0bZ79ytscuEDSz4CHGs+zffhIbdl+sDyukHQBsDewXNK00js+DVgxRN35wHyAKdq+x76CI2IsRO/1kE8a+ZSIiOhDi4HflO0O4LPAfzeUDWzDkrSVpG0G9ql62m8DLgKOKKcdAVw4zvFHRC+zW99GIOksSSsk3dZQtr2kKyX9ujxu13DseEmLJd0l6cCG8r0k3VqOfUmSRnrt9JBHRMQGbH9qnJrakap3HarvnHNt/1DSL4AFko4E7gMOHafXi4g+0KYe8rOBrwDfaihrOiOUpD2AOcCewE7AVZJebnsdcBrVULufA5cCBwGXDffCScgjImJEkt4IHEb1xfMgcJ7tq0eqZ/tu4FVNyh8B9h/vOCOiD5i2jCG3/RNJMwcVDzUj1MFUn4OrgXskLQb2LusuTLF9HYCkbwGHMEJCniErERExLEkfAc4DHgUuAR4BzpV0XK2BRUTf0vrWtzF6zoxQwMCMUNOB+xvOW1rKppf9weXDSg95RESM5DjgjbYbx1V+G7gS+HxtUUVE/xpbD/lUSQsbns8vN46PRbNx4R6mfFhJyCMiYjQWD3p+Nz038VhETBRjHEO+0vbsFusMNSPUUmDnhvNmUA3nW1r2B5cPK0NWIiJiJCcAZ0raTdIWkl5ONRXhJyVNGtjqDTEi+oZpyywrQxhqRqiLgDmSNpe0K7AbcEMZ1rJK0j5ldpXDGcUsUukhj4iIkXyjPB7Gc3+S/etyTKV8cudDi4h+1I5ZViR9l+oGzqmSlgKfBE6iyYxQtm+XtIBqWti1wNFlhhWAo6hmbNmC6mbOYW/ohCTkERExsl3rDqATFv3LLm1/jd2OXt7212inSZtO/LRh/Zq1bW1/8tZbtbV9gHWrVrW1/UmbbdbW9gFYvZH12zPLymFDHGo6I5TtE4ETm5QvBF7ZymtP/L9ZERHRVrbvrTuGiIgBvbhSZxLyiIgYkaS3A38OTKVhFgHbh9cWVET0p40bE96VchNOREQMS9InqcaKT6IaP/kIcCDw2zrjiojoFUnIIyJiJO8D3mz7w8Az5fEvgZm1RhURfUtufetmGbISEREj2bZhUaBnJG1q+wZJf15rVBHRv7o8wW5VEvKIiBjJbyTtaft24DbgKEmPAY/VHFdE9Klu7/FuVRLyiIgYyb8ALyj784Bzga2Bv6stoojoXwbW91ZGnoQ8IiKGVFbgfBr4OYDtG4CX1RpURERv5eNJyCMiYmi210u60PY2dccSETGg14as1D7LiqQlkm6VdLOkhaVse0lXSvp1edyu4fzjJS2WdJekAxvK9yrtLJb0JUlq9noREdGyn0jap+4gIiL+YGAu8la2LtYtPeRvsL2y4fk84GrbJ0maV55/VNIewBxgT2An4CpJL7e9DjgNmEv1s+qlwEHAZZ18ExERPepe4DJJFwL30/Bjse1P1BZVRPSt9JB3xsHAOWX/HOCQhvLzbK+2fQ+wGNhb0jRgiu3rbBv4VkOdiIjYOFsA/0mViM8Adm7YIiI6y2Pculg39JAbuEKSgW/Yng/saHsZgO1lknYo506n3FhULC1la8r+4PKIiNhItt9bdwwREQMEqMuHoLSqGxLyfW0/WJLuKyXdOcy5zcaFe5jyDRuQ5lINbWGXXXZpNdaIiL5SFgFaU/Zfx3N/Wf1/ttfWE9n42+3bT9cdQtfTZpu1/TW8pr1/pDSpzbeYTerWwQej54kwpeD6ugMYX7X/qbH9YHlcAVwA7A0sL8NQKI8ryulLee5PpDOAB0v5jCblzV5vvu3Ztme/8IUvHM+3EhHRUyQdBZzVUHQF8J2yXQAcUUdcERGyW966Wa0JuaStJG0zsA8cQLUK3EU8+0F/BHBh2b8ImCNpc0m7ArsBN5ThLask7VNmVzm8oU5ERIzN4cDJDc9X297Z9s7A/sD76wkrIvpaxpCPux2BC8oMhZsA59r+oaRfAAskHQncBxwKYPt2SQuAO4C1wNFlhhWAo4CzqW4+uozMsBIRsbF2tf2rhud3NOz/CnhJh+OJiAC6fxrDVtWakNu+G3hVk/JHqHpfmtU5ETixSflC4JXjHWNERB/bWtJWtp8EsL1vw7Etga3qCSsi+l2mPYyIiH5xG9VQwmYOAm7vYCwREc/KwkAREdEnvgB8rUxLe5Ht9ZImUa0J8RXgI7VGFxHRI5KQR0REU7bPkzQd+HdgM0krganAauDTtr9ba4AR0Z8M6rFpD5OQR0TEkGx/XtLpwGupkvFHgOtsP15vZBHR17p8CEqrkpBHRMSwbD8BXF53HBERf9Bb+XgS8oiIiIiYWLp9oZ9WZZaViIhoO0mTJf1S0sXl+QmSHpB0c9neWneMETGBZJaViIiIlh0LLAKmNJSdavvkIc6PiGjOQI/d1Jke8oiIaCtJM4C3AWfUHUtETHzCyK1v3Sw95BER0W5fAP4J2GZQ+TGSDgcWAsfZfqzjkTXY5DcPtv011ra5fU2e3OZXiJF4zZr2v4ja25+qzTZta/sAbOxlakOCLWkJsApYB6y1PVvS9sD3gJnAEuCvBj6rJB0PHFnO/6DtMd/8noQ8IiacmfMuqTuEGCVJfwGssH2jpP0aDp0GfIbqx+fPAJ8H3tek/lxgLsDz2LLt8UbEBNG+Hu832F7Z8HwecLXtkyTNK88/KmkPYA6wJ7ATcJWkl9teN5YXzZCViIhop32Bt5eep/OAN0r6d9vLba+zvR44Hdi7WWXb823Ptj17UzbvXNQR0b0GxpC3uo3NwcA5Zf8c4JCG8vNsr7Z9D7CYIT7HRiMJeUREtI3t423PsD2TqjfpGtvvkjSt4bR3ALfVEmBETEhtGkNu4ApJN5Zf5wB2tL0MoDzuUMqnA/c31F1aysYkQ1YiIqIOn5M0i+oLcAnwgXrDiYgJZWxDVqZKWtjwfL7t+Q3P97X9oKQdgCsl3TlMW2oW1ViCgiTkERHRIbavBa4t+++uNZiImMDGPK/4Stuzh2zVfrA8rpB0AdUQlOWSptleVn7ZW1FOXwrs3FB9BjDmO8MzZCUiIiIiJg4z7gsDSdpK0jYD+8ABVEPpLgKOKKcdAVxY9i8C5kjaXNKuwG7ADWN9S+khj4iIiIiJZfwXBtoRuEASVPnxubZ/KOkXwAJJRwL3AYcC2L5d0gLgDqoZTY8e6wwrAy8YERERETFhjPdCP7bvBl7VpPwRYP8h6pwInDger58hKxERERERNUoPeURERERMLO1bGKgWScgjIiIiYuIwsD4JeURERERETcY87WHXSkIeEREBrF3xcN0hbDSvHf+pJxqte3LMk0iMntv7HtrNTz1Vdwgbbf3vn647hJElIY+IiIiIqFES8oiIiIiImmQMeURE+8ycd0ndIURERNfzhB/aNFgS8oiIiIiYWDJkJSIiIiKiJhmyEhERERFRs/SQR0RERETUKAl5RERrcrNmRESMnywMFBERERFRHwPrM8tKRERERER90kMevWS0QwmWnPS2NkcSERERMUpJyCMiIiIi6uJMexgRERERURuDs1Jn9KNWZsnI8JaIiB7VY0lQDCH/nzsuCXmPyjRzERER0bMyZCUiIiIioka5qTMiIiIioiZ25iGPemUoSkRERPS99JBHRERERNTH6SGPiIiIiKiL00MeEREREVEbk1lWIiIiIiJq1WNzpU+qO4DxJOkgSXdJWixpXt3xRERERdJkSb+UdHF5vr2kKyX9ujxuV3eMETExGPB6t7yNpM48smd6yCVNBr4KvBlYCvxC0kW276g3sojelVl/ogXHAouAKeX5POBq2yeVL755wEfrCi4iJhB73HvI684je6mHfG9gse27bT8DnAccXHNMERF9T9IM4G3AGQ3FBwPnlP1zgEM6HVdETFxt6CGvNY/smR5yYDpwf8PzpcCf1BRLS9LLGJ2QP2dRoy8A/wRs01C2o+1lALaXSdqhlsgiYmIa/zHkteaRvZSQq0nZBv8ckjQXmFue/k7SXWN4ranAyjHU64TaY9Nnhz1ce3zD6ObYIPFtjG6ODX12TPG9uB2xjDdJfwGssH2jpP3GUL/xM3v1VT7/tvGMr0t09Z/PjdSr7y3va+ON+TNsFY9dfpXPnzqGqs+TtLDh+Xzb88v+qPLIdumlhHwpsHPD8xnAg4NPKhd+/uDyVkhaaHv2xrTRLt0cG3R3fN0cGyS+jdHNsUH3x7eR9gXeLumtwPOAKZL+HVguaVrpHZ8GrGhWufEzu1evU6++L+jd95b3VS/bB7Wh2VHlke3SS2PIfwHsJmlXSZsBc4CLao4pIqKv2T7e9gzbM6k+l6+x/S6qz+cjymlHABfWFGJEBNScR/ZMD7nttZKOAS4HJgNn2b695rAiIqK5k4AFko4E7gMOrTmeiOhjdeeRPZOQA9i+FLi0Ay+1UUNe2qybY4Pujq+bY4PEtzG6OTbo/vjGhe1rgWvL/iPA/i020avXqVffF/Tue8v76kEdzCM3ILu3lh6NiIiIiJhIemkMeURERETEhJOEfBS6ecnnJrGdIOkBSTeX7a01xrZE0q0ljoWlrJuuXbP4uuL6SdpW0vmS7pS0SNJru+zaNYuvW67d7g0x3CzpCUkf6obrN0xsXXHtulmdS1q3i6SdJf2o/B26XdKxdcc0ngZ/P/WCZp99dcc0HiR9uPwZvE3SdyU9r+6Y+k2GrIyCpI8As4Eptv9C0ueARxuWfN7Odi1LPjeJ7QTgd7ZPriOeRpKWALNtr2wo66Zr1yy+E+iC6yfpHOCnts8od3tvCXyM7rl2zeL7EF1w7RqpWgr5AarFHY6mS65fk9jeS5ddu25SrtX/0LCkNXBYp5a0bhdV0z1Os32TpG2AG4FDJvr7GjD4+6nueMZDs88+27+tO66NIWk68DNgD9u/l7QAuNT22fVG1l/SQz4CdfGSz0PE1u264tp1M0lTgNcDZwLYfqZ84HfFtRsmvm60P/Ab2/fSJdevQWNsMbxal7RuF9vLbN9U9lcBi6hWC5zwJuj307Am2GdfqzYBtpC0CVUHS8fm345KEvKRDSz53LhG63OWfAbqWvK5WWwAx0i6RdJZdQ5roFrh6gpJN6pabQ+659pB8/ig/uv3EuBh4Jvl594zJG1F91y7oeKD+q/dYHOA75b9brl+Axpjg+67dt2k2ZLWPZG4DpA0E3g1cH29kYybob6fJrLhPvsmLNsPACdTTT+6DHjc9hX1RtV/kpAPQw1LPtcdy2DDxHYa8FJgFtVfrM93OrYG+9p+DfAW4GhJr68xlmaaxdcN128T4DXAabZfDTwJdNOY2aHi64Zr9wfl5+S3A/9RZxzNNImtq65dF6p1Set2k7Q18H3gQ7afqDuejdXN350bqds/m8ekdAAcDOwK7ARsJeld9UbVf5KQD29gyeclVD+RvlENSz7DH8YANl3yuY7YbC+3vc72euB0qp96a2H7wfK4ArigxNIN127I+Lrk+i0Fltoe6Ck7n+pLoFuuXdP4uuTaNXoLcJPt5eV5t1w/GBRbF167blPrktbtJGlTqmT8O7Z/UHc842So786JbqjP5onuTcA9th+2vQb4AfCnNcfUd5KQD6Obl3weKraBhKN4B3Bbp2MDkLRVuUmJ8pPeASWW2q/dcPF1w/Wz/RBwv6TdS9H+wB10ybUbKr5uuHaDHMZzh4R0xfUrnhNbF167blPrktbtIklU45EX2T6l7njGyzDfnRPaMJ/NE919wD6Stix/Jvenup8hOqinVursoG5e8vlzkmZR/Zy7BPhATXHsCFxQ/d1mE+Bc2z+U9Au649oNFd+3u+T6/T3wnZJ83E01C8ckuuPaDRXfl7rk2iFpS6oZORpj6Iq/t0PE1i1/b7tS3Utat9G+wLuBWyXdXMo+VlYLjO7U7LNvQrN9vaTzgZuAtcAv6fMVO+uQaQ8jIiIiImqUISsRERERETVKQh4RERERUaMk5BERERERNUpCHhERERFRoyTkERERERE1SkIeXUXS2ZL+b02vLUnflPSYpBs69JqW9LJxbvN3kl4ynm22k6RrJb2/7jgiovMkndDKokGj/cyUNLOc2/L0zhtTN2KskpDHsCQtkbS8LJ4zUPZ+SdfWGFa7vI5qfugZtjdYKVHSe8qH9D8OKl8qab8OxTgi21vbvnssdSVtJukTku6S9KSkByRdJumA8Y4zIrqPpDmSri9//1eU/b8rC8ZERJskIY/R2AQ4tu4gWiVpcotVXgwssf3kMOc8CnxU0pSxR9bVzgcOBg4HtgN2Bb4IvK3ZyelBiugdko6j+vv+b8CLqBZQ+1uqBYw2G6JOq5+zEdFEEvIYjX8D/kHStoMPNPtpr3EIQulV/m9Jp0r6raS7Jf1pKb+/9MAcMajZqZKulLRK0o8lvbih7T8qxx4tvbh/1XDsbEmnSbpU0pPAG5rEu5Oki0r9xZL+ppQfCZwBvLYM+fjUENdiEXAd8OFmByVtLukLkh4s2xckbd5w/B8lLSvH3tek7smS7iu/Snxd0hbl2FRJF5dr+Kikn0pq+ve38Sfdck2+KumScj2vl/TSIeq9ieoXgoNtX2/7mbL90PaxDectkfRRSbcAT0raRNI8Sb8pr3GHpHc0nD/wZ+DLkh6XdKek/Qe9/IvLOaskXSFp6hDXPyLaQNLzgU8Df2f7fNurXPml7b+2vbqct8HnrKS3SfqlpCfK5/oJDe0OfEfMLZ97y0ri32gzSd8qf/9vlzR7lDEP+boN3tfsdSVNavjcekTSAknbt3jZIsZNEvIYjYXAtcA/jLH+nwC3AC8AzgXOA/4X8DLgXcBXJG3dcP5fA58BpgI3A98BUDVs5srSxg7AYcDXJO3ZUPf/ACcC28D/3969hthVXmEc/y8kGmIkQ0yCThojRS1eqkLRtCWtFG21VkUkFm8pESvFogGVNtJoYkJrsbRopRVLkflQLyTFWItVide0Go2giAnaaiTIxDQxiY1Ga6zGpx/Wu2XP9jg5l4nny/ODgXP29d175rx77bXXO4cnW7TlbmAjMAjMAW6IiJMl3U5mgp4uJR+LRzme64ArP6PzXgh8FTgeOA44Ebi2tP808hx+GzgcOKWx7o3AEWXdw4DpwKIy7+rS7qlk1upn5Nest+N8YAmZ8V5Pnp9WTgHWSNrY5ja/BwxI+gh4DfgGMKns646IOLi2/Czya6anAIuBFY3zdwH5FdTTyExct39rZtadrwH7Afe1sWyzn32PfKo2QPYLl0XE2Y11vkX2e98BrikJgMpZ5HVhAPgr8Ls229zLfucDZwMnkdeD/wC/b3O/ZmPOAbm1axFwRURM7WLdDZKGJO0GlgEzgKWSPpC0EvgfGYBW/ibp7yUjs5DMWs8AziBLSoYkfSTpeeAeMrCu3CfpKUkfS9pVb0TZxmxggaRdkl4gs+JzOzmYst5KYEGL2ReWY3tT0lYyOK22/31gSNK6UhZzfa1tAVwKXCnpLUk7gRuA88oiHwIHAzMlfSjpH5LaDchXSHq2BM53kgF/K1OAzbU2TS4Z+bcjYldj2VskDUt6H0DSnyVtKud9GfAqeTNSeRO4ubR9GfAvRpbBDEl6pWxv+ShtNLO9YwqwrfQTAETE6tIHvB8R36wtO6KflfSEpLXl/Ytk4uOkxvaXSHpP0lpgiLyprzwp6YFyjfgTmczYox73+yNgoaSN5VpzPTAnXIZnfeKA3NoiaR1wP3BNF6tvqb2uArjmtHqGfLi233fJuu1BssZ7VrlA7IiIHWQAfFCrdVsYBKpgt/I6mYnu1CIyG3NQY/pg2WZ9+4O1ecONeZWpwATgudqxPVSmQ5YNrQdWRpb9dPJ72Fx7/V9Gnuu67WTQD0C5MRgAvkJmzupGnOeI+EFEvFBr+zHkBb7yRuMGon5eOmmjme0d28lywU8CUklfL33AdkbGC83P/6yIeDwitkbE2+TTxmbZWbPvG+3zP76dwLjH/c4E7q31WS8Du8knkGafOwfk1onFZBa3HsBWAyAn1KY1g9ROzahelFKWycAmsmNdJWmg9jNR0mW1dUfLGm8CJkfEAbVphwBvdNpASf8EVpClI819zKy9P6RMA/g3tWMr8yrbyBuTo2vHNknSxLK/nZKulvRF4EzgqhZ12L16FDghIr7QxrKfnOfIGv8/ApcDB5YL+Dqg/l8ZppenAJX6eTGz/nsa+IAc1L0nzX72LrLUZIakScBtjPz8w6f7vrH4/Pey32Hgu43ryXhJHV8PzMaCA3Jrm6T1ZMnJ/Nq0rWRAe1FE7BM5ULHloMEOnB4RsyNiX7KWfI2kYTJDf0REzI2IceXnhIg4ss32DwOrgV9GxPiIOBa4hFKj3oUlZN1zfbDr3cC1ETG1DExcBFT/Y3c5MC8ijoqICeQNTtW2j8mg9qaImAYQEdMj4tTy+oyIOKwEte+QmZzdXba7pVI+9Djwl5J52jcixpE18aPZn7xAby1tvZjMkNdNA+aX39m5wJHAA2PZfjPrnqQdZJ92a0TMiYiJZeDj8eRnfDQHkE8fd0XEiWSNedN1ETGhjPm5mLyW9KqX/d4G/KIkFCh9djs3I2Z7hQNy69RSPt05Xwr8hHyseTQZ9PbiLjJYfYssl7gQMktMDsw5j8xybCYHQjbLKUZzPnBoWf9eYLGkh7tppKQNZL1j/Xz8nBwE+yKwFni+TEPSg8DNwGNk+cljjU0uKNOfiYh3gEeAL5V5h5f375KZrFslPdFNu/fgHPLG5w5gB7CBPP+nfdYKkl4CflPatQX4MvBUY7E15DFsIweDzZG0fawbb2bdk/Qr4Crgp+S4jy3AH8i+abR+/cfA0ojYSSYhlrdYZhXZvz0K/LokAHrVy35/S2bXV5b1nyEHn5v1o1K66AAAAHVJREFURbQ/LszMrHMRMQ/4oaTZ/W6LmX2+IuJQ8sZ+XH3AqJmN5Ay5mZmZmVkfOSA3MzMzM+sjl6yYmZmZmfWRM+RmZmZmZn3kgNzMzMzMrI8ckJuZmZmZ9ZEDcjMzMzOzPnJAbmZmZmbWRw7IzczMzMz66P83DOEMHWi/dgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 864x360 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "visualize_superpixels_data('MNIST')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[I] Loading data (notebook) ...\n",
      "preparing all graphs for the TEST set...\n",
      "preparing all graphs for the TRAIN set...\n",
      "[I] Data load time: 574.8666s\n",
      "[I] Finished loading.\n",
      "Original Dataset Statistics:\n",
      "\n",
      "Max nodes 150, Min nodes 85\n",
      "\n",
      "Mean no. of nodes 117.63341666666666, S.d. 4.285981022635179\n",
      "\n",
      "VISUALIZATIONS:\n",
      "Max nodes in consideration: 121\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x360 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "visualize_superpixels_data('CIFAR10')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. ZINC Molecules Dataset Visualization Script"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "def visualize_molecules_data(DATASET_NAME):\n",
    "    print(\"[I] Loading data (notebook) ...\")\n",
    "    dataset = LoadData(DATASET_NAME)\n",
    "    trainset, valset, testset = dataset.train, dataset.val, dataset.test\n",
    "    print(\"[I] Finished loading.\")\n",
    "    \n",
    "    # Original Statistics\n",
    "    num_nodes, graph_scores = [], []\n",
    "    for split in [dataset.train, dataset.test, dataset.val]:\n",
    "        num_nodes += [g.number_of_nodes() for g in split[:][0]]\n",
    "        graph_scores += split[:][1]\n",
    "    orig_mean, orig_std, orig_max, orig_min = np.mean(num_nodes), np.std(num_nodes), np.max(num_nodes), np.min(num_nodes)\n",
    "\n",
    "    max_nodes = int(orig_mean+orig_std)\n",
    "    print(\"Original Dataset Statistics:\\n\")\n",
    "    print(\"Max nodes {}, Min nodes {}\\n\".format(orig_max, orig_min))\n",
    "    print(\"Mean no. of nodes {}, S.d. {}\\n\".format(orig_mean, orig_std))\n",
    "\n",
    "    num_nodes, graph_scores = [], []\n",
    "    for split in [dataset.train, dataset.test, dataset.val]:\n",
    "        split_num_nodes, split_graph_scores = [], []\n",
    "        g = split[:][0]\n",
    "        sco = split[:][1]\n",
    "        for idx in range(len(g)):\n",
    "            if g[idx].number_of_nodes() < max_nodes:\n",
    "                split_num_nodes.append(g[idx].number_of_nodes())\n",
    "                split_graph_scores.append(sco[idx].item())\n",
    "\n",
    "\n",
    "        num_nodes += split_num_nodes\n",
    "        graph_scores += split_graph_scores\n",
    "\n",
    "    print(\"VISUALIZATIONS:\\nMax nodes in consideration: {}\".format(max_nodes))\n",
    "    plt.figure(figsize=(12, 5))\n",
    "    plt.subplot(121)\n",
    "\n",
    "    plt.hist(num_nodes, bins=len(np.unique(num_nodes)))\n",
    "    plt.xlabel('Number of Nodes in Graph', fontsize=12)\n",
    "    plt.ylabel('Count', fontsize=12)\n",
    "    plt.show()\n",
    "\n",
    "    print(\"Mean of graph regression scores and s.d. [{:.4f}] (+/-) [{:.4f}]\".format(np.mean(graph_scores), np.std(graph_scores)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[I] Loading data (notebook) ...\n",
      "preparing 10000 graphs for the TRAIN set...\n",
      "preparing 1000 graphs for the VAL set...\n",
      "preparing 1000 graphs for the TEST set...\n",
      "Time taken: 85.4079s\n",
      "[I] Finished loading.\n",
      "Original Dataset Statistics:\n",
      "\n",
      "Max nodes 37, Min nodes 9\n",
      "\n",
      "Mean no. of nodes 23.155333333333335, S.d. 4.481075565332749\n",
      "\n",
      "VISUALIZATIONS:\n",
      "Max nodes in consideration: 27\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Mean of graph regression scores and s.d. [-0.1368] (+/-) [1.9928]\n"
     ]
    }
   ],
   "source": [
    "visualize_molecules_data('ZINC')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4. VOC Superpixels Dataset Visualization Script"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [],
   "source": [
    "def visualize_superpixels_node_data(DATASET_NAME):\n",
    "    print(\"[I] Loading data (notebook) ...\")\n",
    "    dataset = LoadData(DATASET_NAME)\n",
    "    trainset, valset, testset = dataset.train, dataset.val, dataset.test\n",
    "    print(\"[I] Finished loading.\")\n",
    "    \n",
    "        # Original Statistics\n",
    "    num_nodes, graph_labels = [], []\n",
    "    for split in [dataset.train, dataset.test, dataset.val]:\n",
    "        num_nodes += [g.number_of_nodes() for g in split[:][0]]\n",
    "        graph_labels += split[:][1]\n",
    "    orig_mean, orig_std, orig_max, orig_min = np.mean(num_nodes), np.std(num_nodes), np.max(num_nodes), np.min(num_nodes)\n",
    "\n",
    "    max_nodes = int(orig_mean+orig_std)\n",
    "    print(\"Original Dataset Statistics:\\n\")\n",
    "    print(\"Max nodes {}, Min nodes {}\\n\".format(orig_max, orig_min))\n",
    "    print(\"Mean no. of nodes {}, S.d. {}\\n\".format(orig_mean, orig_std))\n",
    "\n",
    "    num_nodes, graph_node_labels = [], []\n",
    "    for split in [dataset.train, dataset.test, dataset.val]:\n",
    "        split_num_nodes, split_graph_labels = [], []\n",
    "        g = split[:][0]\n",
    "        lab = split[:][1]\n",
    "        for idx in range(len(g)):\n",
    "            if g[idx].number_of_nodes() < max_nodes:\n",
    "                split_num_nodes.append(g[idx].number_of_nodes())\n",
    "                split_graph_labels.append(len(np.unique(lab[idx])))\n",
    "\n",
    "\n",
    "        num_nodes += split_num_nodes\n",
    "        graph_node_labels += split_graph_labels\n",
    "    # label_bins = len(np.unique(graph_labels))\n",
    "\n",
    "    print(\"VISUALIZATIONS:\\nMax nodes in consideration: {}\".format(max_nodes))\n",
    "    plt.figure(figsize=(12, 5))\n",
    "    plt.subplot(121)\n",
    "\n",
    "    plt.hist(num_nodes, bins=len(np.unique(num_nodes)))\n",
    "    plt.xlabel('Number of Nodes in Graph', fontsize=12)\n",
    "    plt.ylabel('Count', fontsize=12)\n",
    "\n",
    "    plt.subplot(122)\n",
    "    plt.hist(graph_node_labels, bins=len(np.unique(graph_node_labels)))\n",
    "    plt.xlabel('Number Unique Node Labels in Graph', fontsize=12)\n",
    "    plt.ylabel('Count', fontsize=12)\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[I] Loading data (notebook) ...\n",
      "preparing all graphs for the VAL set...\n",
      "preparing all graphs for the TRAIN set...\n",
      "[I] Data load time: 198.5985s\n",
      "[I] Finished loading.\n",
      "Original Dataset Statistics:\n",
      "\n",
      "Max nodes 919, Min nodes 1\n",
      "\n",
      "Mean no. of nodes 188.68727432848965, S.d. 120.5758466170518\n",
      "\n",
      "VISUALIZATIONS:\n",
      "Max nodes in consideration: 309\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "visualize_superpixels_node_data('VOC')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
